#!/usr/bin python3
# -*- coding:UTF-8 -*-
# Author: nigo
from fuzzywuzzy import process
import pandas as pd
from tqdm import tqdm

def fuzzy_match(df_match,df_basic,match_column,basic_column,threshold=90):
    """匹配最佳名称
    df_match:数据表1
    df_basic:数据表2
    match_column:数据表1的字段名称
    basic_column:数据表2的字段名称
    threshold:相似度阈值(只有大于这个值的才会匹配)
    """
    choices = df_basic[basic_column].to_list() # 表2公司名称列表
    df_match['matchs'] = '' #表1添加一行用于存放表2对应公司名称
    for index in tqdm(range(len(df_match))):# 循环表1所有行
        value = df_match.loc[index,match_column] # 表1每一行的公司名称
        match_value = process.extractOne(value,choices,score_cutoff=threshold)# 表2中最佳匹配
        df_match.loc[index,'matchs'] = match_value[0] if match_value else ''
    return df_match

if __name__ == "__main__":
    df1 = pd.read_excel('数据.xlsx',sheet_name='旧')
    df2 = pd.read_excel('数据.xlsx',sheet_name='新')
    df = fuzzy_match(df2,df1,'新名称','老名称',threshold=90)
    print(df)

